package com.tbsoft.ehr.service.attendance;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.tbsoft.ehr.model.Attendance;
import com.tbsoft.ehr.model.StaffInfo;
import com.tbsoft.ehr.model.YearLeave;

public interface AttendanceService {
	
	public boolean addAttendances(List<Attendance> attendances);	
	
	/**
	 * 根据条件获得用户已休的年假数据
	 * @param si
	 * @param startIndex
	 * @param count
	 * @return
	 */
	public List<YearLeave> queryYearLeaveByCondton(StaffInfo si,int startIndex,int count);
	
	/**
	 * 根据userId获取已休年假天数
	 * @param userId
	 * @return
	 */
	public List<YearLeave> queryYearLeaveByUserId(String userId);
	
	/**
	 * 根据staffId获取其调休工时
	 * @param userId
	 * @return
	 */
	public BigDecimal getDaysOffByStaffId(String staffId);
	
	/**
	 * 根据查询条件获取缺勤信息
	 * 
	 * @param name
	 * @param adTimeFrom
	 * @param adTimeTo
	 * @param startIndex
	 * @param count
	 * @return
	 */
	public List<Attendance> getAbsenceByCondton(String name,String adTimeFrom,String adTimeTo,int startIndex,int count);
		
	/**
	 * 根据查询条件获得缺勤信息数
	 * @param names
	 * @param adTimeFrom
	 * @param adTimeTo
	 * @return
	 */
	int getAbsenceCount(String name,String adTimeFrom, String adTimeTo);
	
	/**
	 * 根据id查询一条缺勤信息
	 * @param id
	 * @return
	 */
	public Attendance getAttendanceById(String id);
	
	/**
	 * 修改缺勤信息
	 * @param ad
	 */
	public void updateAbsence(Attendance ad);
	
	/**
	 * 删除缺勤信息
	 */
	public void deleteAbsence(Attendance ad);
	
	/**
	 * 判断在某天是否已存在请假信息
	 * @param userId
	 * @param d
	 * @return 有 true,无 false
	 */
	public boolean hasAbsenceInDate(String userId,Date d);
}
